#include <algorithm/analytical_model/algorithm/cuda/inter_op/utils/executor/AsyncFunctionExecutor.h>
#include <algorithm/analytical_model/algorithm/cuda/inter_op/utils/executor/async/AllExecutors.h>
#include <algorithm/analytical_model/algorithm/cuda/inter_op/utils/executor/async/Constants.h>


using namespace solar::cuda;

auto async::FunctionExecutor::create(AsyncFunctions type) -> std::shared_ptr<FunctionExecutor>
{
    switch (type)
    {
    case AsyncFunctions::kMetricsRAD:
        return std::make_shared<MetricsRADExecutor>();
    case AsyncFunctions::kMetricsWRAD:
        return std::make_shared<MetricsWRADExecutor>();
    }
}
